/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao.jpa;

import model.Usuario;
import dao.UsuarioDAO;
import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import util.JPAUtil;

/**
 *
 * @author visitante
 */
public class UsuarioJpaDAO extends AbstractJpaDao<Usuario, Long> implements UsuarioDAO {

    public UsuarioJpaDAO() {
        super(Usuario.class);
    }

    public List<Usuario> getAll() {
        try {
            return JPAUtil.getEntityManager().createQuery("from Usuario").getResultList();
        }
        catch (NoResultException e) {
            return null;
        }
    }

    public List<Usuario> getPorNome(String nome) {
        String s = "select u from Usuario u where upper(u.nome) like upper(?)";
        Query query = JPAUtil.getEntityManager().createQuery(s);
        query.setParameter(1, "%" + nome + "%");
        try {
            return (List<Usuario>) query.getResultList();
        } catch (NoResultException e) {
            return null;
        }
    }

    public Usuario getPorMatricula(String matricula) {
        String s = "select u from Usuario u where u.matricula = ?";
        Query query = JPAUtil.getEntityManager().createQuery(s);
        query.setParameter(1, matricula);
        try {
            return (Usuario) query.getSingleResult();
        } catch (NoResultException e) {
            return null;
        }
    }

    public List<Usuario> getPorCPF(String cpf) {
        String s = "select u from Usuario u where u.cpf like ?";
        Query query = JPAUtil.getEntityManager().createQuery(s);
        query.setParameter(1, "%" + cpf + "%");
        try{
        return (List<Usuario>) query.getResultList();
        }
        catch(NoResultException e){
            return null;
        }
    }
}
